#include "chooselevelscene.h"
#include <QPainter>
#include <QMenuBar>
#include "mypushbutton.h"
#include <QTimer>
#include <QLabel>
#include <QString>
#include "playscene.h"
ChooseLevelScene::ChooseLevelScene(QWidget *parent)
    : QMainWindow{parent}
{
    //配置主场景
    //设置标题
    this->setWindowTitle("选择关卡");

    //设置固定大小
    this->setFixedSize(320,588);

    //设置左上角图标
    this->setWindowIcon(QIcon(":/res/Coin0001.png"));  //可用QIcon和QPixmap类型

    //创建菜单栏
    QMenuBar * bar = menuBar();
    setMenuBar(bar);

    //创建开始菜单
    QMenu * startmenu = bar->addMenu("开始");

    //创建退出 菜单项
    QAction * quitaction = startmenu->addAction("退出");

    //点击退出
    connect(quitaction,&QAction::triggered,this,[=](){
        this->close();
    });



    MyPushButton * backbtn = new MyPushButton(":/res/BackButton.png");
    backbtn->setParent(this);
    backbtn->move(this->width()-backbtn->width(),this->height()-backbtn->height());

    //点击back按钮 返回上一页面
    connect(backbtn,&MyPushButton::clicked,[=](){
        //this->hide();
        //告诉主场景 点击了back按钮 主场景监听返回按钮
        qDebug() << "在chooselevelscene页面点击back按钮";
        QTimer::singleShot(300,this,[=](){     //延时300ms
            emit this->ChooseSceneBack();
        });
    });


    //创建选择关卡按钮
    for(int i=0;i<20;i++)
    {
        MyPushButton * menubtn = new MyPushButton(":/res/LevelIcon.png");
        menubtn->setParent(this);
        menubtn->move(25 + i%4 * 70,130 + i/4 * 70);  //只用一个for循环写出一个二维数组

        //监听每个按钮的点击事件
        connect(menubtn,&MyPushButton::clicked,[=](){
            QString str = QString("您选择的是第 %1 关").arg(i+1);
            qDebug()<<str;


            //进入所选关卡页面
            this->hide();
            play = new PlayScene(i+1);

            //设置游戏场景初始位置
            play->setGeometry(this->geometry());

            play->show();

            //监听playscene页面的back按钮
            connect(play,&PlayScene::PlaySceneBack,[=](){
                this->setGeometry(play->geometry());
                this->show();
                delete play;
                play = NULL;
            });

        });

        //按钮上显示关卡数
        QLabel * label = new QLabel;
        label->setParent(this);
        label->setFixedSize(menubtn->width(),menubtn->height());
        label->setText(QString::number(i+1));
        label->move(25 + i%4 * 70,130 + i/4 * 70);

        //设置label上的文字对齐方式   水平居中和垂直居中
        label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

        //设置鼠标穿透功能   51号属性
        label->setAttribute(Qt::WA_TransparentForMouseEvents);
    }

}

void ChooseLevelScene::paintEvent(QPaintEvent*)
{
    //加载背景
    //创建画家 指定绘图设备
    QPainter painter(this);
    //创建QPixmap对象
    QPixmap pix;
    //加载图片
    pix.load(":/res/OtherSceneBg.png");
    //绘制背景图
    painter.drawPixmap(0,0,this->width(),this->height(),pix);

    //加载标题图片
    pix.load(":/res/Title.png");
    painter.drawPixmap((this->width()-pix.width()) * 0.5,30,pix.width(),pix.height(),pix);
}
